﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using LayerEntity.Producto;
using LayerLogic;
using LayerEntity.Almacen;
namespace System2012.Almacen
{
    public partial class frmProducto : DevExpress.XtraEditors.XtraForm
    {
        #region variables
        /// <summary>
        /// metodos y funciones globales de ayuda del sistema
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        GUtil util = new GUtil();
        /// <summary>
        /// Indica si estamos editanado o creando uno Nuevo
        /// 0: Nuevo Documento
        /// 1: Editando y Guardando
        /// </summary>
        int operacion = 0;
        /// <summary>
        /// 
        /// </summary>
        string Id_Producto;
        /// <summary>
        /// dtbPrecios
        /// </summary>
        DataTable dtbPrecios;
        /// <summary>
        /// operacionPrecios 
        /// 0 :Nuevo precio
        /// 1 :Editando y Actualizando los precios independientes
        /// </summary>
        int operacionPrecios=0;
        /// <summary>
        /// idProd_lista: almacen el id del producto de la lista de precios
        /// </summary>
        string idProd_lista;
        /// <summary>
        /// idPrecios : almacen el id del precion al momente de editar un precio del producto
        /// </summary>
        int idPrecios;
        #endregion
       
        public frmProducto()
        {
            InitializeComponent();
            RecControles(this);
            NuevoPrecio();
            NuevoProducto();
            getEeventos();
           
        }
        #region EVENTOS
        private void txtSpin(object sender, DevExpress.XtraEditors.Controls.SpinEventArgs e)
        {
            e.Handled = true;
        }
        private void getEeventos()
        {
            this.txtPrecioCosto.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtValUnidad.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtValMinimo.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtPeso.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtFlete.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtOtrosCostos.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtCostoAlmacen.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtPorcenUtil1.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtPorcenUtil2.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtPorcenUtil3.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtPorcenUtil4.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtPorcenUtil5.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtPrecio1.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtPrecio2.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtPrecio3.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtPrecio4.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtPrecio5.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);

            this.txtUtil1.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtUtil2.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtUtil3.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtUtil4.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            this.txtUtil5.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
            //  this.txtCuotas.Spin += new DevExpress.XtraEditors.Controls.SpinEventHandler(this.txtSpin);
        }
        #endregion
        #region Metodos
        private void NuevoProducto()
        {
            //util.RecControles(this);
            this.txtId.Text = null;
            this.txtCodBar.Text = null;
            this.txtIdFamilia.Text = null;
            this.txtMinicodigo.Text = null;
            this.btnFamilia.Text = null;
            this.btnGrupo.Text = null;
            this.txtModelo.Text = null;
            this.txtColor.Text = null;
            this.txtIdMarca.Text = null;
            this.txtDesMarca.Text = null;
            this.txtDescripcion.Text = null;
            this.txtDescripcionLarga.Text = null;
            this.txtIdCtaContable.Text = null;
            this.btnEditCtaContable.Text = null;
            NuevoPrecio();
            HabilitaBotonesPrecios(false,false,true);
            this.operacion = 0;
            this.Id_Producto = string.Empty;
       
            if (!BGWPrecios.IsBusy) BGWPrecios.RunWorkerAsync();
        }
        
        private bool Validar()
        {
            bool res = false;
            if (this.txtDescripcion.Text.Trim() == string.Empty)
            {
                res = false;
                XtraMessageBox.Show(this, "DEBE  INGRESAR EL NOMBRE DEL PRODUCTO", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtDescripcion.Focus();
                txtDescripcion.SelectAll();
            }
            else
            {
                if (this.txtIdFamilia.Text.Trim() == string.Empty)
                {
                    res = false;
                    XtraMessageBox.Show(this, "DEBE DE SELECCIONAR LA FAMILIA", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    txtIdFamilia.Focus();
                }
                else
                {
                    if (this.chkReintTribut.Checked && this.txtPartidaArancelaria.Text.Length == 0)
                    {
                        res = false;
                        XtraMessageBox.Show(this, "No ingresado la partida Arancelaria conrrespondiente al reintegro tributario", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        if (this.CboEstadoProducto.ItemIndex == -1)
                        {
                            res = false;
                            XtraMessageBox.Show(this, "Debe seleccionar el estado del producto" ,"AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                        else
                        {

                            res = true;
                        }

                    }

                }
            }

            return res;
        }
        private bool validarPrecios()
        {
            bool res=false;

            if (this.CboUnimed.ItemIndex == -1)
            {
                res = false;
                XtraMessageBox.Show(this, "Debe seleccionar la unidad de medida", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                res = false;
            }
            else
            {
                if (this.CboMoneda.ItemIndex == -1)
                {
                   
                    XtraMessageBox.Show(this, "Debe seleccionar la moneda", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    res = false;
                }
                else
                {
                    if (this.cboListaPrecios.ItemIndex == -1)
                    {
                        res = false;
                        XtraMessageBox.Show(this, "Debe seleccionar la lista de precios", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        res = false;
                    }
                    else
                    {
                        if (txtPrecioCosto.Text == string.Empty)
                        {
                            res = false;
                            XtraMessageBox.Show(this, "Ingrese el Precio de Costo", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            txtPrecioCosto.Focus();
                        }
                        else
                        {
                            if (txtValUnidad.Text == string.Empty)
                            {
                                res = false;
                                XtraMessageBox.Show(this, "Ingrese el Valor de la Unidad", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                res = false;
                                txtPrecioCosto.Focus();
                            }
                            else
                            {
                                if (txtValMinimo.Text == string.Empty)
                                {
                                    res = false;
                                    XtraMessageBox.Show(this, "Ingrese el Valor minimo de la Unidad", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                    res = false;
                                    txtPrecioCosto.Focus();
                                }
                                else
                                {
                                    if (txtPeso.Text == string.Empty)
                                    {
                                        res = false;
                                        XtraMessageBox.Show(this, "Ingrese el peso del producto", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                        res = false;
                                        txtPeso.Focus();
                                    }
                                    else
                                    {
                                        if (txtFlete.Text == string.Empty)
                                        {
                                            res = false;
                                            XtraMessageBox.Show(this, "Ingrese el flete", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                            res = false;
                                            txtFlete.Focus();
                                        }
                                        else
                                        {
                                            if (txtOtrosCostos.Text == string.Empty)
                                            {
                                                res = false;
                                                XtraMessageBox.Show(this, "Ingrese otros costos", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                                res = false;
                                                txtOtrosCostos.Focus();
                                            }
                                            else
                                            {
                                                if (txtCostoAlmacen.Text == string.Empty)
                                                {
                                                    res = false;
                                                    XtraMessageBox.Show(this, "Ingrese el costo de almacen", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                                    res = false;
                                                    txtCostoAlmacen.Focus();
                                                }
                                                else
                                                {
                                                    if (txtPorcenUtil1.Text == string.Empty)
                                                    {
                                                        res = false;
                                                        XtraMessageBox.Show(this, "Ingrese el porcentaje de urilidad1", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                                        res = false;
                                                        txtPorcenUtil1.Focus();
                                                    }
                                                    else
                                                    {
                                                        if (txtPorcenUtil2.Text == string.Empty)
                                                        {
                                                            res = false;
                                                            XtraMessageBox.Show(this, "Ingrese el porcentaje de urilidad2", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                                            res = false;
                                                            txtPorcenUtil2.Focus();
                                                        }
                                                        else
                                                        {
                                                            if (txtPorcenUtil3.Text == string.Empty)
                                                            {
                                                                res = false;
                                                                XtraMessageBox.Show(this, "Ingrese el porcentaje de urilidad3", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                                                res = false;
                                                                txtPorcenUtil3.Focus();
                                                            }
                                                            else
                                                            {
                                                                if (txtPorcenUtil4.Text == string.Empty)
                                                                {
                                                                    res = false;
                                                                    XtraMessageBox.Show(this, "Ingrese el porcentaje de urilidad4", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                                                    res = false;
                                                                    txtPorcenUtil4.Focus();
                                                                }
                                                                else
                                                                {
                                                                    if (txtPorcenUtil5.Text == string.Empty)
                                                                    {
                                                                        res = false;
                                                                        XtraMessageBox.Show(this, "Ingrese el porcentaje de urilidad5", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                                                        res = false;
                                                                        txtPorcenUtil5.Focus();
                                                                    }
                                                                    else
                                                                    {
                                                                        if (txtPrecio1.Text == string.Empty)
                                                                        {
                                                                            res = false;
                                                                            XtraMessageBox.Show(this, "Ingrese el precio1", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                                                            res = false;
                                                                            txtPrecio1.Focus();
                                                                        }
                                                                        else
                                                                        {
                                                                            if (txtPrecio2.Text == string.Empty)
                                                                            {
                                                                                res = false;
                                                                                XtraMessageBox.Show(this, "Ingrese el precio2", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                                                                res = false;
                                                                                txtPrecio2.Focus();
                                                                            }
                                                                            else
                                                                            {
                                                                                if (txtPrecio3.Text == string.Empty)
                                                                                {
                                                                                    res = false;
                                                                                    XtraMessageBox.Show(this, "Ingrese el precio3", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                                                                    res = false;
                                                                                    txtPrecio3.Focus();
                                                                                }
                                                                                else
                                                                                {
                                                                                    if (txtPrecio4.Text == string.Empty)
                                                                                    {
                                                                                        res = false;
                                                                                        XtraMessageBox.Show(this, "Ingrese el precio4", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                                                                        res = false;
                                                                                        txtPrecio4.Focus();
                                                                                    }
                                                                                    else
                                                                                    {
                                                                                        if (txtPrecio5.Text == string.Empty)
                                                                                        {
                                                                                            res = false;
                                                                                            XtraMessageBox.Show(this, "Ingrese el precio5", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                                                                            res = false;
                                                                                            txtPrecio4.Focus();
                                                                                        }
                                                                                        else
                                                                                        {
                                                                                            res = true;
                                                                                        }
                                                                                    }
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return res;
        }
        private void Grabar()
        {
            EProducto objProd = new EProducto();
            EPrecios objPrecio = new EPrecios();
                objProd.id_producto=this.txtId.Text;
                objProd.minicodigo = txtMinicodigo.Text;
			    objProd.descripcion=this.txtDescripcion.Text;
			    objProd.descripcion_larga=this.txtDescripcionLarga.Text;
			    objProd.cod_bar=this.txtCodBar.Text;
			    objProd.inc_serie=chkSolicitaSerie.Checked==true? "S":"N"; 
			    objProd.prod_serv=this.chkServicio.Checked?"S":"N";
                objProd.inc_barra = "";
			    objProd.impuesto=0.00;
                objProd.reintegro_tributario = this.chkReintTribut.Checked ? "S" : "N"; ;
                objProd.partida_arancelaria = txtPartidaArancelaria.Text; 
			    objProd.ubica_almacen="S";
                objProd.pide_objetivos = this.chkPideObjetivos.Checked ? "S" : "N"; 
			    objProd.obs_compra="";
			    objProd.obs_ventas="";
                objProd.controla_stock = this.chkCtrlaStcok.Checked ? "S" : "N"; ; ;
                objProd.prececible = this.chkPerecible.Checked ? "S" : "N"; ; ;
                objProd.suje_peresepcion = this.chkSujetoPercepcion.Checked ? "S" : "N"; ; ;
                objProd.vende_pack = this.chkVendePack.Checked ? "S" : "N"; ; ;
			    objProd.idfamilia=this.txtIdFamilia.Text;
                objProd.Id_Estado = int.Parse(this.CboEstadoProducto.EditValue.ToString());

                if (operacion == 0)
                {
                    if (ValidarPrecios())
                    {
                        objPrecio.id_unidad = int.Parse(CboUnimed.EditValue.ToString());
                        objPrecio.cosnto_unitario = double.Parse(this.txtPrecioCosto.Text);
                        objPrecio.val_unidad = double.Parse(txtValUnidad.Text);
                        objPrecio.val_minimo = double.Parse(txtValMinimo.Text);
                        objPrecio.peso = double.Parse(this.txtPeso.Text);
                        objPrecio.imp_flete = double.Parse(txtFlete.Text);
                        objPrecio.costo_almacen = double.Parse(txtCostoAlmacen.Text);
                        objPrecio.id_lista = int.Parse(cboListaPrecios.EditValue.ToString());
                        objPrecio.id_producto = this.Id_Producto;
                        objPrecio.id_precios = idPrecios;
                        objPrecio.id_moneda = int.Parse(CboMoneda.EditValue.ToString());
                        objPrecio.porcent_util1 = double.Parse(this.txtPorcenUtil1.Text);
                        objPrecio.porcent_util2 = double.Parse(this.txtPorcenUtil2.Text);
                        objPrecio.porcent_util3 = double.Parse(this.txtPorcenUtil3.Text);
                        objPrecio.porcent_util4 = double.Parse(this.txtPorcenUtil4.Text);
                        objPrecio.porcent_util5 = double.Parse(this.txtPorcenUtil5.Text);
                        objPrecio.precio1 = double.Parse(this.txtPrecio1.Text);
                        objPrecio.precio2 = double.Parse(this.txtPrecio2.Text);
                        objPrecio.precio3 = double.Parse(this.txtPrecio3.Text);
                        objPrecio.precio4 = double.Parse(this.txtPrecio4.Text);
                        objPrecio.precio5 = double.Parse(this.txtPrecio5.Text);
                        objPrecio.predeterminado = this.chkPredeterminado.Checked;
                        objPrecio.Id_Estado = int.Parse(this.CboEstadoPrecios.EditValue.ToString());

                    }
                    else
                    {
                        return;
                    }
                }
                string resultado = System2012.SystemUtils.RecodManajerproducto.MantenimientoProductos(objProd,objPrecio, this.operacion == 0 ? EnumOperaciones.Insertar : EnumOperaciones.Actualizar);
                if (resultado == "0")
                {
                    XtraMessageBox.Show(this, "PROCESO EFECTUADO CON EXITO", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.None);
                }
                else
                {
                    if (resultado == "-1")
                    {
                        XtraMessageBox.Show(this, "INCONSISTENCIA INESPERADA \n NO SE REALIZO NINGUNA OPERACIÓN", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        if (resultado == "-2")
                        {
                            XtraMessageBox.Show(this, "EL NOMBRE DEL PRODUCTO  YA EXISTE", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        else
                        {
                            if (resultado == "-2")
                            {
                                XtraMessageBox.Show(this, "INCONSISTENCIA INESPERADA \n NO SE REALIZO NINGUNA CTUALIZACION", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }
                            else
                            {
                                if (resultado == "-4")
                                {
                                    XtraMessageBox.Show(this, "NO HA SELECCIONADO NINGUN REGISTRO\n PARA REALIAR ESTE\n PROCESO INTENTE NUEVAMENTE", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                }
                                else
                                {
                                    XtraMessageBox.Show(this, resultado);
                                }
                            }
                        }
                    }
                }
        }
        private bool ValidarPrecios()
        {
            bool res = true;
            if (CboUnimed.ItemIndex == -1)
            {
                res = false;
                XtraMessageBox.Show(this, "Seleccione la Unidad de Medida", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                CboUnimed.Focus();
            }
            else
            {
                if (cboListaPrecios.ItemIndex == -1)
                {
                    res = false;
                    res = false;
                    XtraMessageBox.Show(this, "Seleccione la Lista de Precios", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    cboListaPrecios.Focus();
                }
                else
                {
                    if (CboMoneda.ItemIndex == -1)
                    {
                        res = false;
                        res = false;
                        XtraMessageBox.Show(this, "Seleccione la Moneda del precio", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        CboMoneda.Focus();
                    }
                    else
                    {
                        if (CboEstadoPrecios.ItemIndex == -1)
                        {
                            res = false;
                            res = false;
                            XtraMessageBox.Show(this, "Seleccione el Estado del precio", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            CboEstadoPrecios.Focus();
                        }
                    }
                }
            }
            return res;
        }
        private void GrabarPrecios()
        {
            EPrecios objPre = new EPrecios();
            objPre.id_unidad = int.Parse(CboUnimed.EditValue.ToString());
            objPre.cosnto_unitario = double.Parse(this.txtPrecioCosto.Text);
            objPre.val_unidad = double.Parse(txtValUnidad.Text);
            objPre.val_minimo = double.Parse(txtValMinimo.Text);
            objPre.peso = double.Parse(this.txtPeso.Text);
            objPre.imp_flete = double.Parse(txtFlete.Text);
            objPre.costo_almacen = double.Parse(txtCostoAlmacen.Text);
            objPre.id_lista = int.Parse(cboListaPrecios.EditValue.ToString());
            objPre.id_producto = this.Id_Producto;
            objPre.id_precios = idPrecios;
            objPre.id_moneda = int.Parse(CboMoneda.EditValue.ToString());
            objPre.porcent_util1 = double.Parse(this.txtPorcenUtil1.Text);
            objPre.porcent_util2 = double.Parse(this.txtPorcenUtil2.Text);
            objPre.porcent_util3 = double.Parse(this.txtPorcenUtil3.Text);
            objPre.porcent_util4 = double.Parse(this.txtPorcenUtil4.Text);
            objPre.porcent_util5 = double.Parse(this.txtPorcenUtil5.Text);
            objPre.precio1 = double.Parse(this.txtPrecio1.Text);
            objPre.precio2 = double.Parse(this.txtPrecio2.Text);
            objPre.precio3 = double.Parse(this.txtPrecio3.Text);
            objPre.precio4 = double.Parse(this.txtPrecio4.Text);
            objPre.precio5 = double.Parse(this.txtPrecio5.Text);
            objPre.predeterminado = this.chkPredeterminado.Checked;
            objPre.Id_Estado = int.Parse(this.CboEstadoPrecios.EditValue.ToString());
            string resultado = System2012.SystemUtils.RecodManajerproducto.MantenimientoPrecios(objPre, this.operacionPrecios == 0 ? EnumOperaciones.Insertar : EnumOperaciones.Actualizar);
            if (resultado == "0")
            {
                XtraMessageBox.Show(this, "PROCESO EFECTUADO CON EXITO", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.None);
            }
            else
            {
                if (resultado == "-11")
                {
                    XtraMessageBox.Show(this, "INCONSISTENCIA INESPERADA \n NO SE REALIZO NINGUNA OPERACIÓN", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    if (resultado == "-12")
                    {
                        XtraMessageBox.Show(this, "NO EXISTE EL NOMBRE DE LA LISTA DE PRECIOS", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        if (resultado == "-13")
                        {
                            XtraMessageBox.Show(this, "SELECCIONE CORRECTAMENTE LA UNIDAD DE MEDIDA", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        else
                        {
                            if (resultado == "-14")
                            {
                                XtraMessageBox.Show(this, "SELECCIONE CORRECATAMENTE EL PRODUCTO PARA ESTA LISTA DE PRECIOS", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }
                            else
                            {
                                if (resultado == "-15")
                                {
                                    XtraMessageBox.Show(this, "INCONSISTENCIA INESPERADA \nNO SE EFECTUO NINGUNA ACTUALIZACION DE PRECIOS", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                }
                                else
                                {
                                    if (resultado == "-16")
                                    {
                                        XtraMessageBox.Show(this, "NO HA SELECCIONADO NINGUN REGISTRO\n PARA REALIAR ESTE\n PROCESO INTENTE NUEVAMENTE", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    }
                                    else
                                    {
                                        XtraMessageBox.Show(this, resultado);
                                    }
                                }
                            }
                        }
                    }
                }
            }

        }
        private void BuscarFamilias()
        {

            Listados.frmListadoFamilias f = new Listados.frmListadoFamilias();
            f.ShowDialog();
            if (f.data != null && f.data.Count > 0)
            {
                this.txtIdFamilia.Text = f.data[0].ToString();
                this.btnFamilia.Text = f.data[1].ToString();
                this.txtIdGrupo.Text = f.data[2].ToString();
                this.btnGrupo.Text = f.data[3].ToString();
            }
        }
        private void EditarProductos(String codigo)
        {
            EProducto objProd = new EProducto();
            objProd.Condicion = "where id_producto='"+codigo+"'";
            DataTable dtb = System2012.SystemUtils.RecodManajerproducto.GetListaGeneralProductos(objProd);
            this.txtId.Text = dtb.Rows[0]["id_producto"].ToString();
            this.txtCodBar.Text = dtb.Rows[0]["cod_bar"].ToString();
            this.txtMinicodigo.Text = dtb.Rows[0]["minicodigo"].ToString();
            this.txtDescripcion.Text = dtb.Rows[0]["descripcion"].ToString();
            this.txtDescripcionLarga.Text = dtb.Rows[0]["descripcion_larga"].ToString();
            this.btnGrupo.Text = dtb.Rows[0]["grupo"].ToString();
            this.txtIdGrupo.Text = dtb.Rows[0]["idgrupo"].ToString();
            this.btnFamilia.Text = dtb.Rows[0]["familia"].ToString();
            this.txtIdFamilia.Text = dtb.Rows[0]["idfamilia"].ToString();
            this.chkSolicitaSerie.Checked = dtb.Rows[0]["inc_serie"].ToString() == "S" ? true : false;
            this.chkServicio.Checked = dtb.Rows[0]["prod_serv"].ToString() == "S" ? true : false;
            this.chkReintTribut.Checked = dtb.Rows[0]["reintegro_tributario"].ToString() == "S" ? true : false;
            this.chkPideObjetivos.Checked = dtb.Rows[0]["pide_objetivos"].ToString() == "S" ? true : false;
            this.chkCtrlaStcok.Checked = dtb.Rows[0]["controla_stock"].ToString() == "S" ? true : false;
            this.chkPerecible.Checked = dtb.Rows[0]["perecible"].ToString() == "S" ? true : false;
            this.chkSujetoPercepcion.Checked = dtb.Rows[0]["suje_peresepcion"].ToString() == "S" ? true : false;
            this.chkVendePack.Checked = dtb.Rows[0]["vende_pack"].ToString() == "S" ? true : false; 
            Id_Producto = dtb.Rows[0]["id_producto"].ToString();
            this.CboEstadoProducto.EditValue = int.Parse(dtb.Rows[0]["id_estado"].ToString());
            operacion = 2;
            HabilitaBotonesPrecios(true,false,true);
            if (dtb.Rows.Count>0){
                if (!BGWPrecios.IsBusy) BGWPrecios.RunWorkerAsync();
            }
        }
        private void EditarPrecios( int index)
        {
            this.CboUnimed.EditValue =int.Parse( dtbPrecios.Rows[index]["id_unidad"].ToString());
            this.txtPrecioCosto.Text = util.FormatMoney( dtbPrecios.Rows[index]["costo_unitario"].ToString());
            this.txtValUnidad.Text = dtbPrecios.Rows[index]["val_unidad"].ToString();
            this.txtValMinimo.Text = dtbPrecios.Rows[index]["val_minimo"].ToString();
            this.CboMoneda.EditValue = int.Parse(dtbPrecios.Rows[index]["id_moneda"].ToString());
            this.txtPeso.Text =util.FormatMoney( dtbPrecios.Rows[index]["peso"].ToString());
            this.txtFlete.Text =util.FormatMoney( dtbPrecios.Rows[index]["imp_flete"].ToString());
            this.txtOtrosCostos.Text = util.FormatMoney(dtbPrecios.Rows[index]["imp_otros_costos"].ToString());
            this.txtCostoAlmacen.Text =util.FormatMoney( dtbPrecios.Rows[index]["costo_almacen"].ToString());
            this.cboListaPrecios.EditValue = int.Parse(dtbPrecios.Rows[index]["id_lista"].ToString());
            this.txtPorcenUtil1.Text =util.FormatMoney( dtbPrecios.Rows[index]["porcent_util1"].ToString());
            this.txtPorcenUtil2.Text =util.FormatMoney( dtbPrecios.Rows[index]["porcent_util2"].ToString());
            this.txtPorcenUtil3.Text =util.FormatMoney( dtbPrecios.Rows[index]["porcent_util3"].ToString());
            this.txtPorcenUtil4.Text =util.FormatMoney( dtbPrecios.Rows[index]["porcent_util4"].ToString());
            this.txtPorcenUtil5.Text =util.FormatMoney( dtbPrecios.Rows[index]["porcent_util5"].ToString());
            this.txtPrecio1.Text = util.FormatMoney(dtbPrecios.Rows[index]["precio1"].ToString());
            this.txtPrecio2.Text = util.FormatMoney(dtbPrecios.Rows[index]["precio2"].ToString());
            this.txtPrecio3.Text = util.FormatMoney(dtbPrecios.Rows[index]["precio3"].ToString());
            this.txtPrecio4.Text = util.FormatMoney(dtbPrecios.Rows[index]["precio4"].ToString());
            this.txtPrecio5.Text = util.FormatMoney(dtbPrecios.Rows[index]["precio5"].ToString());
            this.chkPredeterminado.Checked = bool.Parse(dtbPrecios.Rows[index]["predeterminado"].ToString());
            CboEstadoPrecios.EditValue = int.Parse(dtbPrecios.Rows[index]["id_estado"].ToString());
            idPrecios = int.Parse(dtbPrecios.Rows[index]["id_precios"].ToString());
            idProd_lista = dtbPrecios.Rows[index]["id_producto"].ToString();

            HabilitaBotonesPrecios(true,true,false);
            operacionPrecios = 1;
            //this.CboEstadoPrecios.EditValue
        }
        private void HabilitaBotonesPrecios(bool est,bool res,bool cbo){
            this.btnNewPrecio.Enabled = est;
            this.btnGrabarPrecio.Enabled = res;
            this.cboListaPrecios.Enabled = cbo;
            this.CboUnimed.Enabled = cbo;
        }
        private void NuevoPrecio()
        {

            cboListaPrecios.EditValue= null;
            CboMoneda.EditValue = null;
            CboUnimed.EditValue = null;
            CboEstadoPrecios.EditValue = null;
            this.txtPrecioCosto.Text = "0.00";
            this.txtValUnidad.Text = "0.00";
            this.txtValMinimo.Text = "0.00";
            this.txtValUnidad.Text = "0.00";
            this.txtPeso.Text = "0.00";
            this.txtFlete.Text = "0.00";
            this.txtOtrosCostos.Text = "0.00";
            this.txtCostoAlmacen.Text = "0.00";
            this.txtPorcenUtil1.Text = "0.00";
            this.txtPorcenUtil2.Text = "0.00";
            this.txtPorcenUtil3.Text = "0.00";
            this.txtPorcenUtil4.Text = "0.00";
            this.txtPorcenUtil5.Text = "0.00";
            this.txtPrecio1.Text = "0.00";
            this.txtPrecio2.Text = "0.00";
            this.txtPrecio3.Text = "0.00";
            this.txtPrecio4.Text = "0.00";
            this.txtPrecio5.Text = "0.00";
            HabilitaBotonesPrecios(true, true, true);
            operacionPrecios = 0;
        }
        #endregion
        #region Desplazamientos

        
        private void PresionadoTeclas(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Down)
            {
                if (sender == txtCodBar)
                {
                    txtMinicodigo.Focus();
                    txtMinicodigo.SelectAll();
                }

                if (sender == txtMinicodigo)
                {
                    txtIdFamilia.Focus();
                    txtIdFamilia.SelectAll();
                }
                if (sender == txtIdFamilia)
                {
                    txtModelo.Focus();
                    txtModelo.SelectAll();
                }

                if (sender == txtModelo)
                {
                    txtColor.Focus();
                    txtColor.SelectAll();
                }
                if (sender == txtColor)
                {
                    txtIdMarca.Focus();
                    txtIdMarca.SelectAll();
                }
                if (sender == txtIdMarca)
                {
                    txtDescripcion.Focus();
                    txtDescripcion.SelectAll();
                }
               
                if (sender == txtDescripcion)
                {
                    txtDescripcionLarga.Focus();
                    txtDescripcionLarga.SelectAll();
                }
                if (sender == txtDescripcionLarga)
                {
                    txtIdCtaContable.Focus();
                    txtIdCtaContable.SelectAll();
                }

                if (sender == txtIdCtaContable)
                {
                    this.CboEstadoProducto.Focus();
                }

                
                
                if (sender == txtPrecioCosto)
                {
                    txtValUnidad.Focus();
                    txtValUnidad.SelectAll();
                }
                if (sender == txtValUnidad)
                {
                    txtValMinimo.Focus();
                    txtValMinimo.SelectAll();
                }
                if (sender == txtValMinimo)
                {
                    CboMoneda.Focus();
                }
                
                if (sender == txtPeso)
                {
                    txtFlete.Focus();
                    txtFlete.SelectAll();
                }
                if (sender == txtFlete)
                {
                    txtOtrosCostos.Focus();
                    txtOtrosCostos.SelectAll();
                }
                if (sender == txtOtrosCostos)
                {
                    cboListaPrecios.Focus();
                }
                
                if (sender == txtPorcenUtil1)
                {
                    txtPorcenUtil2.Focus();
                    txtPorcenUtil2.SelectAll();
                   
                }
                if (sender == txtPorcenUtil2)
                {
                    txtPorcenUtil3.Focus();
                    txtPorcenUtil3.SelectAll();
                }
                if (sender == txtPorcenUtil3)
                {
                    txtPorcenUtil4.Focus();
                    txtPorcenUtil4.SelectAll();
                }
                if (sender == txtPorcenUtil4)
                {
                    txtPorcenUtil5.Focus();
                    txtPorcenUtil5.SelectAll();
                }
                
                if (sender == txtPorcenUtil5)
                {
                    txtPrecio1.Focus();
                    txtPrecio1.SelectAll();
                }
                if (sender == txtPrecio1)
                {
                    txtPrecio2.Focus();
                    txtPrecio2.SelectAll();
                }
                if (sender == txtPrecio2)
                {
                    txtPrecio3.Focus();
                    txtPrecio3.SelectAll();
                }
                if (sender == txtPrecio3)
                {
                    txtPrecio4.Focus();
                    txtPrecio4.SelectAll();
                }
                if (sender == txtPrecio4)
                {
                    txtPrecio5.Focus();
                    txtPrecio2.SelectAll();
                }
                if (sender == txtPrecio5)
                {
                    this.CboEstadoPrecios.Focus();
                    txtPrecioCosto.SelectAll();
                }
            }
            if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Right)
            {
                if (sender == CboEstadoProducto)
                {
                    CboUnimed.Focus();
                }
                if (sender == CboUnimed)
                {
                    txtPrecioCosto.Focus();
                    txtPrecioCosto.SelectAll();
                }
                if (sender == CboMoneda)
                {
                    txtPeso.Focus();
                    txtPeso.SelectAll();
                }
                if (sender == cboListaPrecios)
                {
                    txtPorcenUtil1.Focus();
                    txtPorcenUtil1.SelectAll();
                }
            }
            if (e.KeyCode == Keys.Up)
            {
                if (sender ==txtMinicodigo )
                {
                    txtCodBar.Focus();
                    txtCodBar.SelectAll();
                }

                if (sender ==txtIdFamilia )
                {
                    txtMinicodigo.Focus();
                    txtMinicodigo.SelectAll();
                }
                if (sender ==txtModelo )
                {
                    txtIdFamilia.Focus();
                    txtIdFamilia.SelectAll();
                }

                if (sender ==txtColor )
                {
                    txtModelo.Focus();
                    txtModelo.SelectAll();
                }
                if (sender ==txtIdMarca )
                {
                    txtColor.Focus();
                    txtColor.SelectAll();
                }
                if (sender ==txtDescripcion )
                {
                    txtIdMarca.Focus();
                    txtIdMarca.SelectAll();
                }

                if (sender ==txtDescripcionLarga )
                {
                    txtDescripcion.Focus();
                    txtDescripcion.SelectAll();
                }
                if (sender == txtIdCtaContable)
                {
                   txtDescripcionLarga .Focus();
                   txtPrecio2.SelectAll();
                }

                if (sender == btnEditCtaContable)
                {
                    txtIdCtaContable.Focus();
                    txtIdCtaContable.SelectAll();
                }

                if (sender == controPrecios)
                {
                    txtIdCtaContable.Focus();
                    txtIdCtaContable.SelectAll();
                }

                
                if (sender ==txtPrecioCosto )
                {
                    CboUnimed.Focus();

                }
                if (sender ==txtValUnidad )
                {
                    txtPrecioCosto.Focus();
                    txtPrecioCosto.SelectAll();
                }
                if (sender ==txtValMinimo )
                {
                    txtValUnidad.Focus();
                    txtValUnidad.SelectAll();
                }
               
                if (sender ==txtPeso )
                {
                    CboMoneda.Focus();
                }
                if (sender ==txtFlete )
                {
                    txtPeso.Focus();
                    txtPeso.SelectAll();
                }
                if (sender ==txtOtrosCostos )
                {
                    txtFlete.Focus();
                    txtFlete.SelectAll();
                }
               
                if (sender ==txtPorcenUtil1 )
                {
                    cboListaPrecios.Focus();
                }
                if (sender ==txtPorcenUtil2 )
                {
                    txtPorcenUtil1.Focus();
                    txtPorcenUtil1.SelectAll();
                }
                if (sender ==txtPorcenUtil3 )
                {
                    txtPorcenUtil2.Focus();
                    txtPorcenUtil2.SelectAll();
                }
                if (sender ==txtPorcenUtil4 )
                {
                    txtPorcenUtil3.Focus();
                    txtPorcenUtil3.SelectAll();
                }
                if (sender ==txtPorcenUtil5 )
                {
                    txtPorcenUtil4.Focus();
                    txtPorcenUtil4.SelectAll();
                }
                if (sender ==txtPrecio1 )
                {
                    txtPorcenUtil5.Focus();
                    txtPorcenUtil5.SelectAll();
                }
                if (sender ==txtPrecio2 )
                {
                    txtPrecio1.Focus();
                    txtPrecio1.SelectAll();
                }
                if (sender ==txtPrecio3 )
                {
                    txtPrecio2.Focus();
                    txtPrecio2.SelectAll();
                    
                }
                if (sender ==txtPrecio4 )
                {
                    txtPrecio3.Focus();
                    txtPrecio3.SelectAll();
                }
                if (sender ==txtPrecio5 )
                {
                    txtPrecio4.Focus();
                    txtPrecio4.SelectAll();
                }
            }
            if (e.KeyCode == Keys.Left)
            {
                if (sender == CboUnimed)
                {
                    this.CboEstadoProducto.Focus();
                }
                if (sender == CboMoneda)
                {
                    txtValMinimo.Focus();
                    txtValMinimo.SelectAll();
                }
                if (sender == cboListaPrecios)
                {
                    txtOtrosCostos.Focus();
                    txtPrecio2.SelectAll();
                }
                if (sender == this.CboEstadoProducto)
                {
                    txtIdCtaContable.Focus();
                    txtIdCtaContable.SelectAll();
                }
                if (sender == CboEstadoPrecios)
                {
                    txtPrecio5.Focus();
                    txtPrecio5.SelectAll();
                }
            }
        }
        public void RecControles(Control control)
        {
            //Recorremos con un ciclo for each cada control que hay en la colección Controls
            foreach (Control contHijo in control.Controls)
            {
                //Preguntamos si el control tiene uno o mas controles dentro del mismo con la propiedad 'HasChildren'
                //Si el control tiene 1 o más controles, entonces llamamos al procedimiento de forma recursiva, para que siga recorriendo los demás controles 
                if (contHijo.HasChildren) this.RecControles(contHijo);
                //Aqui va la lógica de lo queramos hacer, en mi ejemplo, voy a pintar de color azul el fondo de todos los controles
                // Asignamos el Evento para los desplazamientos de los controles
                contHijo.KeyDown += new KeyEventHandler(PresionadoTeclas);
              //  contHijo.KeyPress += new KeyPressEventHandler(this.ValidacionesCajas);
            }
        }
        #endregion
        #region Calculos
        float pre_costo, tip_cambio, peso, flete, otros, costo, monto_sol;
        float utilidad, pre_venta;
        private void AsignaVariablesprecios()
        {
            if (!string.IsNullOrEmpty(this.txtPrecioCosto.Text))
            {
                this.costo = float.Parse(this.txtPrecioCosto.Text);
            }
            else
            {
                this.costo = 0;
            }
            if (!string.IsNullOrEmpty(this.txtPeso.Text))
            {
                this.peso = float.Parse(this.txtPeso.Text);
            }
            else
            {
                this.peso = 0;
            }

            if (!string.IsNullOrEmpty(this.txtFlete.Text))
            {
                this.flete = float.Parse(this.txtFlete.Text);
            }
            else
            {
                this.flete = 0;
            }

            if (!string.IsNullOrEmpty(this.txtOtrosCostos.Text))
            {
                this.otros = float.Parse(this.txtOtrosCostos.Text);
            }
            else
            {
                this.otros = 0;
            }

        }
        private void OperacionPrecios()
        {
            tip_cambio = 1;
            if (tip_cambio > 0)
            {
                monto_sol = costo * tip_cambio;
            }
            else
            {
                monto_sol = costo;
            }

            pre_costo = monto_sol + flete + otros;
            this.txtCostoAlmacen.Text = pre_costo.ToString();
            pre_venta = pre_costo * (utilidad / 100) + pre_costo;

        }
        private void GenerarPrecios(){
            AsignaVariablesprecios();
            OperacionPrecios();
        }
        
        #endregion


        #region calculo de Utilidades

        private void txtChanged_Util(int txt)
        {
            String val_Util = null;
            switch (txt)
            {
                case 1: val_Util = txtPorcenUtil1.Text; break;
                case 2: val_Util = txtPorcenUtil2.Text; break;
                case 3: val_Util = txtPorcenUtil3.Text; break;
                case 4: val_Util = txtPorcenUtil4.Text; break;
                case 5: val_Util = txtPorcenUtil5.Text; break;
            }
          
         //   val_Util1 = txtPorcenUtil1.Text;
            if (string.IsNullOrEmpty(val_Util))
            {
                val_Util = "0.0";
            }
           
            String val_costo_al = null;
            val_costo_al = txtCostoAlmacen.Text;
            if (string.IsNullOrEmpty(val_costo_al))
            {
                val_costo_al = "0.0";
            }
            double porcent_util = (double.Parse(val_Util) / 100);
            double Costo_almcen = double.Parse(val_costo_al);
            double Pre = Costo_almcen * (1 + porcent_util);
            if (Pre > 0)
            {
                switch (txt)
                {
                    case 1: this.txtPrecio1.Text = Pre.ToString(); break;
                    case 2: this.txtPrecio2.Text = Pre.ToString(); break;
                    case 3: this.txtPrecio3.Text = Pre.ToString(); break;
                    case 4: this.txtPrecio4.Text = Pre.ToString(); break;
                    case 5: this.txtPrecio5.Text = Pre.ToString(); break;
                }
               
            }

            double utillidad = Pre- double.Parse(val_costo_al);

            switch (txt)
            {
                case 1: this.txtUtil1.Text = utillidad.ToString(); break;
                case 2: this.txtUtil2.Text = utillidad.ToString(); break;
                case 3: this.txtUtil3.Text = utillidad.ToString(); break;
                case 4: this.txtUtil4.Text = utillidad.ToString(); break;
                case 5: this.txtUtil5.Text = utillidad.ToString(); break;
            }
           
        }
        private void getPorcentUtil(int txt)
        {
            String val_Util = null;
            switch (txt)
            {
                case 1: val_Util = txtUtil1.Text; break;
                case 2: val_Util = txtUtil2.Text; break;
                case 3: val_Util = txtUtil3.Text; break;
                case 4: val_Util = txtUtil4.Text; break;
                case 5: val_Util = txtUtil5.Text; break;
            }
            if (string.IsNullOrEmpty(val_Util))
            {
                val_Util = "0.0";
            }
            String val_costo_al = null;
            val_costo_al = txtCostoAlmacen.Text;
            if (string.IsNullOrEmpty(val_costo_al))
            {
                val_costo_al = "0.0";
            }

            double val_porcent;
            double Costo_almacen = double.Parse(val_costo_al);
            val_porcent = (100 * double.Parse(val_Util)) / Costo_almacen;

            double Pre = Costo_almacen + double.Parse(val_Util);
            if (Pre > 0)
            {
                switch (txt)
                {
                    case 1: this.txtPrecio1.Text = Pre.ToString(); break;
                    case 2: this.txtPrecio2.Text = Pre.ToString(); break;
                    case 3: this.txtPrecio3.Text = Pre.ToString(); break;
                    case 4: this.txtPrecio4.Text = Pre.ToString(); break;
                    case 5: this.txtPrecio5.Text = Pre.ToString(); break;
                }

            }
            switch (txt)
            {
                case 1: this.txtPorcenUtil1.Text = val_porcent.ToString(); break;
                case 2: this.txtPorcenUtil2.Text = val_porcent.ToString(); break;
                case 3: this.txtPorcenUtil3.Text = val_porcent.ToString(); break;
                case 4: this.txtPorcenUtil4.Text = val_porcent.ToString(); break;
                case 5: this.txtPorcenUtil5.Text = val_porcent.ToString(); break;
            }
        }
        #endregion
        private void textEdit2_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                EFamilia obj = new EFamilia();
                obj.Nombre = "where idfamilia = '" + this.txtIdFamilia.Text + "'";
               DataTable dtb = SystemUtils.RecodManajerproducto.GetListaFamilia(obj);
               if (dtb.Rows.Count == 0)
               {
                   BuscarFamilias();
               }
               else
               {
                   this.txtIdFamilia.Text = dtb.Rows[0]["idfamilia"].ToString();
                   this.btnFamilia.Text = dtb.Rows[0]["familia"].ToString();
                   this.txtIdGrupo.Text = dtb.Rows[0]["idgrupo"].ToString();
                   this.btnGrupo.Text = dtb.Rows[0]["grupo"].ToString();
               }
            }
        }

        private void textEdit2_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F1)
            {
                BuscarFamilias();
            }
        }

        private void barManager1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if ((string)e.Item.Tag == "Nuevo")
            {
                this.NuevoProducto();
            

            }
            if ((string)e.Item.Tag == "Grabar")
            {
                if (Validar())
                {
                    this.Grabar();
                }
            }
        }

        private void BGWUnimed_DoWork(object sender, DoWorkEventArgs e)
        {
            EUnimed obj = new EUnimed();
            obj.des_unidad = "";
            e.Result = System2012.SystemUtils.RecodManajerproducto.GetListaUnidad(obj);
        }

        private void BGWUnimed_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            CboUnimed.Properties.DataSource = e.Result;
            if (!BGWmoneda.IsBusy) BGWmoneda.RunWorkerAsync();
        }

        private void frmProducto_Load(object sender, EventArgs e)
        {
            if (!BGWUnimed.IsBusy) BGWUnimed.RunWorkerAsync();
        }

        private void BGWmoneda_DoWork(object sender, DoWorkEventArgs e)
        {
            this.BGWmoneda.ReportProgress(30, "Cargando lista de Monedas");
            e.Result = SystemUtils.RecordManagerCommonList.GetMoneda();
            this.BGWmoneda.ReportProgress(100, "Completado");
        }

        private void BGWmoneda_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            CboMoneda.Properties.DataSource = e.Result;
            if (!BGWListaPrecios.IsBusy) BGWListaPrecios.RunWorkerAsync();
        }

        private void BGWListaPrecios_DoWork(object sender, DoWorkEventArgs e)
        {
            this.BGWListaPrecios.ReportProgress(30, "Cargando lista de Precios");
            e.Result = SystemUtils.RecodManajerproducto.GetListaPrecios();
            this.BGWListaPrecios.ReportProgress(100, "Completado");
        }

        private void BGWListaPrecios_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            cboListaPrecios.Properties.DataSource = e.Result;
            if (!BGWEstadoProducto.IsBusy) BGWEstadoProducto.RunWorkerAsync();
        }

        private void BGWEstadoProducto_DoWork(object sender, DoWorkEventArgs e)
        {
            this.BGWEstadoProducto.ReportProgress(30, "Cargando Estado");
            e.Result = SystemUtils.RecordManagerCommonList.GetEstados();
            this.BGWEstadoProducto.ReportProgress(100, "Completado");
        }

        private void BGWEstadoProducto_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            this.CboEstadoProducto.Properties.DataSource = e.Result;
            if (!BGWEstadoPrecios.IsBusy) BGWEstadoPrecios.RunWorkerAsync();
        }

        private void BGWEstadoPrecios_DoWork(object sender, DoWorkEventArgs e)
        {
            this.BGWEstadoPrecios.ReportProgress(30, "Cargando Estado");
            e.Result = SystemUtils.RecordManagerCommonList.GetEstados();
            this.BGWEstadoPrecios.ReportProgress(100, "Completado");
        }

        private void BGWEstadoPrecios_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            this.CboEstadoPrecios.Properties.DataSource = e.Result;
        }

        private void txtId_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F1)
            {
                Listados.frmBusquedaProductos f = new System2012.Listados.frmBusquedaProductos();
                f.Opcion = 1;
                f.ShowDialog();
                if (f.data != null)
                {
                    if (f.data.Count > 0)
                    {
                        if (f.data[0] != null)
                        {
                            EditarProductos(f.data[0].ToString());
                        }
                    }
                }
            }
        }

        private void BGWPrecios_DoWork(object sender, DoWorkEventArgs e)
        {
            EPrecios objPre = new EPrecios();
            objPre.Condicion = "where id_producto='" + Id_Producto + "'";
            e.Result = System2012.SystemUtils.RecodManajerproducto.GetListaGeneralPrecios(objPre);
            
        }

        private void BGWPrecios_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            dtbPrecios = (DataTable)e.Result;
            gridControl1.DataSource = e.Result;
            if (!BGWListAlm.IsBusy) BGWListAlm.RunWorkerAsync();
        }

        private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
        {
            if (!BGWPrecios.IsBusy)
            {
                if (this.dtbPrecios.Rows.Count > 0)
                {
                    EditarPrecios(e.RowHandle);
                }

            }
        }

        private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            
        }

        private void btnNewPrecio_Click(object sender, EventArgs e)
        {
            NuevoPrecio();
        }

        private void BGWPrecios_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            barEditItem1.EditValue = e.ProgressPercentage;
        }

        private void btnGrabarPrecio_Click(object sender, EventArgs e)
        {
            if (validarPrecios() == true)
            {
                GrabarPrecios();
                if (!BGWPrecios.IsBusy) BGWPrecios.RunWorkerAsync();
            }
        }

        private void txtPrecioCosto_EditValueChanged(object sender, EventArgs e)
        {

        }

        private void txtPrecioCosto_KeyUp(object sender, KeyEventArgs e)
        {
            
        }

        private void txtPrecioCosto_KeyPress(object sender, KeyPressEventArgs e)
        {
          

            if (e.KeyChar == 13)
            {
                GenerarPrecios();
            }
        }

        private void btnGrabar_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {

        }

        private void BGWListAlm_DoWork(object sender, DoWorkEventArgs e)
        {
            EAlmacen objAl = new EAlmacen();
            objAl.Condicion = "";
            e.Result = System2012.SystemUtils.RecordmanagerAlmacen.GetListaAlamcen(objAl);
        }

        private void BGWListAlm_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            ListAlm.DataSource = e.Result;
        }

        private void barButtonItem4_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            string id;
            for (int i = 0; i < ListAlm.ItemCount; i++)
            {
                if (ListAlm.GetItemChecked(i))
                {
                    id = ListAlm.GetItemValue(i).ToString();
                    Console.Write(id + "\n");
                }
            }
        }

        private void txtFlete_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                GenerarPrecios();
            }
        }

        private void txtOtrosCostos_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                GenerarPrecios();
            }
        }

        private void txtPeso_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                GenerarPrecios();
            }
        }

        private void txtPorcenUtil1_TextChanged(object sender, EventArgs e)
        {
            txtChanged_Util(1);
        }

        private void txtPorcenUtil2_TextChanged(object sender, EventArgs e)
        {
            txtChanged_Util(2);
        }

        private void txtPorcenUtil3_TextChanged(object sender, EventArgs e)
        {
            txtChanged_Util(3);
        }

        private void txtPorcenUtil4_TextChanged(object sender, EventArgs e)
        {
            txtChanged_Util(4);
        }

        private void txtPorcenUtil5_TextChanged(object sender, EventArgs e)
        {
            txtChanged_Util(5);
        }

        private void txtUtil1_TextChanged(object sender, EventArgs e)
        {
            getPorcentUtil(1);
        }

        private void txtUtil2_TextChanged(object sender, EventArgs e)
        {
            getPorcentUtil(2);
        }

        private void txtUtil3_TextChanged(object sender, EventArgs e)
        {
            getPorcentUtil(3);
        }

        private void txtUtil4_TextChanged(object sender, EventArgs e)
        {
            getPorcentUtil(4);
        }

        private void txtUtil5_TextChanged(object sender, EventArgs e)
        {
            getPorcentUtil(5);
        }
    }
}